#TODO 元素定位

#元素定位常用的方法

from selenium import webdriver
from selenium.webdriver.common.by import By


class TestCase:
    def __init__(self):
        self.diver = webdriver.Chrome()
        self.diver.get('https://www.baidu.com')

    def id(self):
        # 通过ID定位元素By.ID
        kw = self.diver.find_element(By.ID, 'kw')
        print(kw.get_attribute('outerHTML'))

    def class_name(self):
        # 通过标签class属性定位元素By.CLASS_NAME
        kw = self.diver.find_element(By.CLASS_NAME, 's_ipt')
        print(kw.get_attribute('outerHTML'))

    def link_text(self):
        # 通过链接文本定位元素By.LINK_TEXT
        news = self.diver.find_element(By.LINK_TEXT, '新闻')
        print(news.get_attribute('outerHTML'))

    def partial_link_text(self):
        # 通过部分链接文本进行定位By.PARTIAL_LINK_TEXT
        hao123 = self.diver.find_element(By.PARTIAL_LINK_TEXT, 'hao')
        print(hao123.get_attribute('outerHTML'))

    def name(self):
        # 通过name属性定位元素
        ie = self.diver.find_element(By.NAME, 'ie')
        print(ie.get_attribute('outerHTML'))

    def tag_name(self):
        # 通过标签名称定位
        ipt = self.diver.find_element(By.TAG_NAME, 'input')
        print(ipt.get_attribute('outerHTML'))

        # 返回多个
        ipts = self.diver.find_elements(By.TAG_NAME, 'input')
        for ipt in ipts:
            print(ipt.get_attribute('outerHTML'))

    def quit(self):
        # 关闭连接
        self.diver.quit()


if __name__ == '__main__':
    case = TestCase()
    case.id()
    case.class_name()
    case.link_text()
    case.partial_link_text()
    case.name()
    case.tag_name()
    case.quit()
